#pragma once 

class Hero;
class Player;
class Skill;
struct HeroData;
class Deck
{
public:
	void ShowHeroPack();
	void ShowMainHero();
	void ShowItem();
	void Duel();
	void ShowDuelResult();
	void Clear();

public:
	void AddHeroSelf(int,int);
	void AddHeroEnemy(int,int);
	void RandHeroEnemy();
	void SetMainHeroSelf(int);
	void SetMainHeroEnemy(int);

	void SetPlayer(Player* self, Player* enemy);
	void ShowLife();
	bool HaveWinner();
	
private:
	
	void OnDuelDraw(Hero* sHero, Hero* eHero, Player* sPlayer, Player* ePlayer);
	void OnDuelWin(Hero* winHero, Hero* loseHero, Player* winPlayer, Player* losePlayer, int damage);
	void OnAttributeDraw(Hero* sHero, Hero* eHero, Player* sPlayer, Player* ePlayer, HeroData& winHeroData, HeroData& loseHeroData);
	void OnAttributeWin( Hero* winHero, Hero* loseHero, Player* winPlayer, Player* losePlayer, HeroData& winHeroData, HeroData& loseHeroData );
	void OnSkill(Skill* skill, Hero* winHero, Hero* loseHero, Player* winPlayer, Player* losePlayer,HeroData& winHeroData, HeroData& loseHeroData);
	

	
	Hero* m_HeroSelf[2];
	Hero* m_HeroEnemy[2];

	Player* m_self;
	Player* m_enemy;

	int m_MainHeroSelf;
	int m_MainHeroEnemy;

	enum{ DRAW_GAME, PLAYER_WIN, COMPUTER_WIN};
	int m_result;

};